#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>

// int mkdir(const char *pathname, mode_t mode);
// int rmdir(const char *pathname);

//  DIR *opendir(const char *name);
// struct dirent *readdir(DIR *dirp);
int main()
{
    // DIR *dirp = opendir("./");
    DIR *dirp = opendir("/");

    // struct dirent *dir_cont = readdir(dirp);
    // printf("%lu %s %d %d \n", dir_cont->d_ino, dir_cont->d_name, dir_cont->d_type, dir_cont->d_reclen);

    // dir_cont = readdir(dirp);
    // printf("%lu %s %d %d \n", dir_cont->d_ino, dir_cont->d_name, dir_cont->d_type, dir_cont->d_reclen);

    // dir_cont = readdir(dirp);
    // printf("%lu %s %d %d \n", dir_cont->d_ino, dir_cont->d_name, dir_cont->d_type, dir_cont->d_reclen);

    while (1)
    {
        struct dirent *dir_cont = readdir(dirp);
        if (dir_cont == NULL)
        {
            break;
        }

        // printf("%lu %s %d %d \n", dir_cont->d_ino, dir_cont->d_name, dir_cont->d_type, dir_cont->d_reclen);
        // printf("%s %d \n", dir_cont->d_name, dir_cont->d_type);

        if (dir_cont->d_type == DT_DIR)   //目录
        {
            printf("dir %s \n", dir_cont->d_name);
        }
        if (dir_cont->d_type == DT_REG)  //普通文件
        {
            printf("file %s \n", dir_cont->d_name);
        }
        if (dir_cont->d_type == DT_LNK)   //链接文件
        {
            printf("link %s \n", dir_cont->d_name);
        }
    }

    closedir(dirp);

    return 0;
}
